package com.apps.java.反射;
/**
 *提供三种获取Class类型的对象
 *      1.使用类的class属性来获取该类对应的Class对象
 *      2.调用对象的getClass()方法，返回该对象所属类对应的Class对象
 *          该方法是Object类中的方法，所有的java对象都可以调用该方法
 *      3.使用Class类中的静态方法forName(String className)，该方法需要传入字符串参数，该字符串参数的值是某个类的全路径，也就是完整包名的路径。
 *
 */
public class ReflectDemo {
    public static void main(String[] args) throws ClassNotFoundException {
        //1.使用类的class属性来获取该类对应的Class对象
        Class<Student> c1 = Student.class;
        System.out.println("c1:" + c1);//class com.apps.java.反射.Student

        Class<Student> c2 = Student.class;
        System.out.println("c2:" + c2);//class com.apps.java.反射.Student
        System.out.println("c1==c2：" + (c1 == c2));

        System.out.println("----------------------------");

        //2.调用对象的getClass()方法，返回该对象所属类对应的Class对象
        Student stu = new Student();
        Class<? extends Student> c3 = stu.getClass();
        System.out.println("c3:" + c3);
        System.out.println("c1==c3:" + (c1 == c3));

        System.out.println("----------------------------");

        //3.使用Class类中的静态方法forName(String className)，该方法需要传入字符串参数，该字符串参数的值是某个类的全路径，也就是完整包名的路径。
        Class<?> c4 = Class.forName("com.apps.java.反射.Student");
        System.out.println("c4:" + c4 );
        System.out.println("c1==c4:" + (c1 == c4));


    }
}
